home *** CD-ROM | disk | FTP | other *** search
- # The oldest AppleEvent test program.
- # Its function has been overtaken by echo.py and tell.py.
-
- import AE
- from AppleEvents import *
- import Evt
- from Events import *
- import struct
- import aetools
- import macfs
- import sys
- import MacOS
-
- MacOS.SchedParams(1, 0)
-
- def aehandler(request, reply):
- tosend = []
- print 'request:', aetools.unpackevent(request)
- param = request.AEGetParamDesc(keyDirectObject, typeWildCard)
- if param.type == typeAEList:
- n = param.AECountItems()
- print 'List has', n, 'items'
- for i in range(1, 1+n):
- type, item = param.AEGetNthDesc(i, typeFSS)
- data = item.data
- print 'item', i, ':', type, item.type, len(data), 'bytes'
- vol, dir, fnlen = struct.unpack('hlb', data[:7])
- filename = data[7:7+fnlen]
- print 'vol:', vol, '; dir:', dir, '; filename:', `filename`
- print 'full path:', macfs.FSSpec((vol,dir,filename)).as_pathname()
- tosend.append(item)
- else:
- pass
- print 'param:', (param.type, param.data[:20]), param.data[20:] and '...'
- if tosend:
- passtothink(tosend)
-
-
- def passtothink(list):
- target = AE.AECreateDesc(typeApplSignature, 'KAHL')
- event = AE.AECreateAppleEvent(kCoreEventClass,
- kAEOpenDocuments,
- target,
- kAutoGenerateReturnID,
- kAnyTransactionID)
- aetools.packevent(event, {keyDirectObject: list})
- reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
- kAENormalPriority,
- kAEDefaultTimeout)
- #print "Reply:", aetools.unpackevent(reply)
- return
- event = AE.AECreateAppleEvent(kCoreEventClass,
- kAEOpenApplication,
- target,
- kAutoGenerateReturnID,
- kAnyTransactionID)
- reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
- kAENormalPriority,
- kAEDefaultTimeout)
-
- def unihandler(req, rep):
- print 'unihandler'
- aehandler(req, rep)
-
- quit = 0
- def quithandler(req, rep):
- global quit
- quit = 1
-
- def corehandler(req, rep):
- print 'core event!'
- parameters, attributes = aetools.unpackevent(req)
- print "event class =", attributes['evcl']
- print "event id =", attributes['evid']
- print 'parameters:', parameters
- # echo the arguments, to see how Script Editor formats them
- aetools.packevent(rep, parameters)
-
- def wildhandler(req, rep):
- print 'wildcard event!'
- parameters, attributes = aetools.unpackevent(req)
- print "event class =", attributes['evcl']
- print "event id =", attributes['evid']
- print 'parameters:', parameters
-
- AE.AEInstallEventHandler(typeAppleEvent, kAEOpenApplication, aehandler)
- AE.AEInstallEventHandler(typeAppleEvent, kAEOpenDocuments, aehandler)
- AE.AEInstallEventHandler(typeAppleEvent, kAEPrintDocuments, aehandler)
- AE.AEInstallEventHandler(typeAppleEvent, kAEQuitApplication, quithandler)
- AE.AEInstallEventHandler(typeAppleEvent, typeWildCard, unihandler)
- AE.AEInstallEventHandler('core', typeWildCard, corehandler)
- #AE.AEInstallEventHandler(typeWildCard, typeWildCard, wildhandler)
-
-
- def main():
- global quit
- quit = 0
- while not quit:
- ok, e = Evt.WaitNextEvent(-1, 60)
- if ok:
- print 'Event:', e
- if e[0] == 23: # kHighLevelEvent
- AE.AEProcessAppleEvent(e)
- elif e[0] == keyDown and chr(e[1]&0xff) == '.' and e[4]&cmdKey:
- raise KeyboardInterrupt, "Command-Period"
- else:
- MacOS.HandleEvent(e)
-
- if __name__ == '__main__':
- main()
-
- print "This module is obsolete -- use echo.py or tell.py ..."
-